# 导入PaddleOCR库，用于OCR识别  
from paddleocr import PaddleOCR
# 导入re库，用于正则表达式匹配  
import re


# 定义OCR函数，接收一张图片作为输入，返回识别出的文字信息
def OCR(img):
    # 创建一个PaddleOCR对象，设置使用角度分类和中文识别  
    ocr = PaddleOCR(use_angle_cls=True, lang='ch')
    # 对图片进行OCR识别，返回识别结果列表  
    result = ocr.ocr(img, cls=True)
    # 初始化一个空字符串，用于拼接识别出的文字  
    text = ''
    # 遍历识别结果列表，将每行识别的文字拼接到text字符串中  
    for line in result[0]:
        text += line[1][0]
        # 返回识别的文字信息字符串
    return text


# 定义主函数，程序入口
def main():
    # 定义图片文件名  
    img = 'img_2.png'
    # 调用OCR函数，对图片进行OCR识别，并将结果赋值给title变量  
    title = OCR(img)
    # 使用正则表达式匹配识别出的文字中的姓名、性别、民族、出生日期、住址和公民身份证号码等字段，并将结果赋值给results变量  
    results = re.findall(
        r"姓名(.*?)性别(.*?)民族(.*?)出生(.*?)住址(.*?)公民身份证号码(.*)",
        title
    )
    # 打印匹配结果列表  
    print(results)
    # 定义一个包含字段名称的列表  
    a_list = ['姓名', '性别', '民族', '出生', '住址', '公民身份证号码']
    # 遍历匹配结果列表中的每个元素，打印字段名称和对应的值  
    for i in range(len(results[0])):
        print(f"{a_list[i]}:{results[0][i]}")


if __name__ == '__main__':
    main()
